package com.metarnet.topo.dataaccess.abs;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.sql.RowSet;

/**
 * 数据库外观类
 * @author VCPP
 * @version 1.0
 */
public interface IDataAccessFacade {
	  
	/**
	 * 执行非查询操作
	 * @param sqlString
	 * @return
	 */
	public boolean executeNonQuery(String sqlString);
	
	/**
	 * 获取执行非查询操作影响行数
	 * @param sqlString
	 * @return
	 */
	public int getNonQueryRowCount(String sqlString);
	
	/**
	 * 获取执行查询操作影响行数
	 * @param sqlString
	 * @return
	 */
	public int getQueryRowCount(String sqlString);
	
	/**
	 * 通过查询字符串返回List数据集
	 * @param sqlString 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getList(String sqlString);
	   

	/**
	 * 通过查询字符串返回RowSet数据集
	 * @param sqlString
	 * @return
	 */
	public RowSet getRowSet(String sqlString) throws SQLException;
	   
	
	/**
	 * 通过查询字符串和页大小返回List数据集
	 * @param sqlString
	 * @param pageSize 
	 * @param pageNum
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getList(String sqlString, int pageSize, int pageNum);
	   
	/**
	 * 通过查询字符串和页大小返回RowSet数据集
	 * @param sqlString
	 * @param pageSize 
	 * @param pageNum
	 * @return
	 */
	public RowSet getRowSet(String sqlString, int pageSize, int pageNum) throws SQLException;

	
	
	/*************************************** 开启事务 ***************************************************/
	/**
	 * 开启事务，返回开启了事务的连接
	 * @category 事务
	 */
	public Connection beginTransaction();
	
	/**
	 * 提交事务
	 * @param conn 事务所在的连接
	 * @category 事务
	 */
	public void commitTransaction(Connection conn);
	
	/**
	 * 回滚事务
	 * @param conn 事务所在的连接
	 * @category 事务
	 */
	public void roolbackTransaction(Connection conn);
	/**
	 * 事务中执行非查询操作，执行完成后不关闭连接
	 * @param sqlString 
	 * @category 事务
	 */
	public boolean executeNonQueryInTransaction(String sqlString,Connection conn) ;
	
	/**
	 * 事务中获取执行非查询操作影响行数，执行完成后不关闭连接
	 * @param sqlString
	 * @return
	 * @category 事务
	 */
	public int getNonQueryRowCountInTransaction(String sqlString,Connection conn);
	
	/**
	 * 事务中通过查询字符串返回RowSet数据集，完成后不关闭连接
	 * @param sqlString
	 * @category 事务
	 */
	public RowSet getRowSetInTransaction(String sqlString,Connection conn) throws SQLException ;
	
	/**
	 * 事务中通过查询字符串和页大小返回RowSet数据集，完成后不关闭连接
	 * @param sqlString
	 * @param pageSize 
	 * @param pageNum
	 * @category 事务
	 */
	public RowSet getRowSetInTransaction(String sqlString, int pageSize, int pageNum,Connection conn) throws SQLException ;
	
}